The worldwide web offers real-time access to large amounts of data, enabling enterprises to provide information via widely accessible electronic communications networks in the form of a variety of computer programs. Such enterprises commonly spend a great deal of time and money testing the computer programs they develop in order to ascertain the programs' functionality and performance. In order to test the operation of the computer programs, performance tests are performed to determine a program's behavior under both normal and anticipated peak load conditions, troubleshoot performance problems, and provide unit tests on a daily basis to developed modules.
Current solutions for automated testing allow software developers or QA engineers to prepare testing scripts and run such scripts to test the software being developed. A testing script typically includes the following test parameters: an amount of networked devices to be used in the test, actions to be taken by the networked devices through the test, and the like. A networked device is a computing device commutatively connected to a network (e.g., the Internet) and configured to run the scripting test.
To test a remote server or a software application hosted by such a server (hereinafter “entity under-test”), networked devices are configured to execute the script tests. Throughout the execution of the test scripts, the performance of the entity under-test is monitored. Upon identification of an event which requires additional testing parameters or tuning of the already existing parameters, the test must be terminated and a new test script that includes the new and/or tuned testing parameters is programmed and executed. Thus, existing script-based testing solutions are static as the additional required parameters can only be added upon termination of the executed script.
In addition, in most cases, new testing scripts must be loaded to the networked devices. This cycle of terminating, programming, loading, and re-executing test scripts is a waste of computational resources, time, and money. For example, testing a new software application using the conventional automated testing techniques would delay the launch or deployment of the new software application.
Furthermore, more and more software applications (apps) are executed by mobile devices, such as smartphones and tablet computers. The execution of such applications is distributed between the mobile device (frontend) and a server (backend). The backend processes requests received from all mobile devices co-currently running the applications. To test the performance of the backend server would require simulating the operation of the mobile devices. In addition to the disadvantages of utilizing script-based testing, there are security challenges that should be overcome when testing applications executed by mobile devices. Such challenges arise due to the fact that communication between mobile devices and backend servers are typically encrypted.
It would be therefore advantageous to provide an automated testing solution that would overcome the deficiencies noted above.